{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据分析笔试题\n",
    "\n",
    "[`data`文件夹](https://github.com/DataGroup49/DataTests/tree/main/data)中有三个数据表（字段定义详见文末所附*数据字典*）。\n",
    "\n",
    "这是一个患者管理项目的子集。医生收录患者后，患者将按要求在家自行测量血糖，向系统上传血糖值；还需在自我管理一段时间后，定期回到医院做化验检查。请根据这些数据，回答以下问题：\n",
    "\n",
    "设：当前日期为2021年7月1日\n",
    "\n",
    "(_可以选用本文件进行作答,也可根据自己的思路另行新建答题文件。)_\n",
    "\n",
    "## Mysql操作\n",
    "\n",
    "假设这三个数据表来自Mysql数据库，写一个sql查询脚本，查询以下问题：\n",
    "1. 每位医生各收录几名患者？其中各有几名患者上传了血糖？\n",
    "2. 按收录患者数量降序排列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-08-23T02:17:30.760162Z",
     "start_time": "2021-08-23T02:17:30.614005Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import datetime as dt\n",
    "from scipy import stats\n",
    "import statsmodels.api as sm\n",
    "# from pymongo import MongoClient\n",
    "import gc\n",
    "gc.disable()\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-08-23T02:02:55.423960Z",
     "start_time": "2021-08-23T02:02:55.406999Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "select p.doc_id,count(distinct p.pat_id),count(distinct g.pat_id)\n",
      "from patient_list p left join glucose g on p.pat_id=g.pat_id\n",
      "group by p.doc_id\n"
     ]
    }
   ],
   "source": [
    "sql ='''select p.doc_id,count(distinct p.pat_id),count(distinct g.pat_id)\n",
    "from patient_list p left join glucose g on p.pat_id=g.pat_id\n",
    "group by p.doc_id'''\n",
    "\n",
    "print(sql)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## MongoDB操作\n",
    "\n",
    "假设`patient_list`表来自MongoDB数据库，字段层级均为单层，完善以下查询脚本，选出最近一个月（2021年6月）收录的患者"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-08-23T01:49:57.817690Z",
     "start_time": "2021-08-23T01:49:57.806687Z"
    }
   },
   "source": [
    "```python\n",
    "client = MongoClient('mongodb://<host>:<port>/')\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-08-23T02:03:02.245342Z",
     "start_time": "2021-08-23T02:03:02.231347Z"
    }
   },
   "outputs": [],
   "source": [
    "filt={\n",
    "   # 请完善此处内容\n",
    "}\n",
    "proj = {\n",
    "   # 请完善此处内容\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-08-23T01:51:45.865622Z",
     "start_time": "2021-08-23T01:51:45.854621Z"
    }
   },
   "source": [
    "```python\n",
    "result = client[<db>][<collection>].find(\n",
    "    filter=filt,\n",
    "    projection=proj\n",
    ")\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 分析案例\n",
    "\n",
    "请对`data`文件夹中的数据进行分析，回答以下几个问题：\n",
    "\n",
    "### 第一组\n",
    "\n",
    "**按医生分组分析：**\n",
    "\n",
    "1. 患者年龄分布是什么样的？\n",
    "2. 最近一个月有多少比例的患者上传了血糖数据？上传血糖的患者中，人均测量次数是多少？\n",
    "3. 测量次数>=8次的患者各有多少人，这些患者的人均测量次数是多少？   \n",
    "4. 从化验数据中找出所有糖化血红蛋白（即HbA1c，默认单位是“%”）数据，分别分析总体患者及每位医生管理的患者中，基线值（即患者收录日期前180天至后收录日期后30天之间的最早一次化验）与管理一段时间之后的最新化验结果（即当前日期之前90天内的最后一次化验）的变化：\n",
    "   1. 管理前后的平均值和/或中位数分别多少，是否有显著差异？\n",
    "   2. 设糖化血红蛋白达标为：年龄>=65岁的患者要求 < 7.5%，年龄<65岁的患者要求<7%。不良为>9.5%。达标率和不良率分别如何？管理前后是否有显著差异？\n",
    "\n",
    "*提示：糖化血红蛋白数据可能需要适当探索和清洗。*\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-08-23T02:13:17.713531Z",
     "start_time": "2021-08-23T02:13:17.686525Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(535, 4)\n",
      "(3149, 3)\n",
      "(1416, 6)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pat_id</th>\n",
       "      <th>create_time</th>\n",
       "      <th>age</th>\n",
       "      <th>doc_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>P_0000209</td>\n",
       "      <td>2018-11-14 14:05:36</td>\n",
       "      <td>63</td>\n",
       "      <td>D_0000001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>P_0000520</td>\n",
       "      <td>2019-02-27 19:55:03</td>\n",
       "      <td>41</td>\n",
       "      <td>D_0000001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>P_0000200</td>\n",
       "      <td>2019-01-16 20:17:16</td>\n",
       "      <td>43</td>\n",
       "      <td>D_0000001</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      pat_id          create_time  age     doc_id\n",
       "0  P_0000209  2018-11-14 14:05:36   63  D_0000001\n",
       "1  P_0000520  2019-02-27 19:55:03   41  D_0000001\n",
       "2  P_0000200  2019-01-16 20:17:16   43  D_0000001"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pat_id</th>\n",
       "      <th>create_time</th>\n",
       "      <th>glucose</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>P_0000020</td>\n",
       "      <td>2021-06-01 02:34:18</td>\n",
       "      <td>4.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>P_0000020</td>\n",
       "      <td>2021-06-01 06:39:31</td>\n",
       "      <td>6.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>P_0000020</td>\n",
       "      <td>2021-06-02 08:17:35</td>\n",
       "      <td>11.7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      pat_id          create_time  glucose\n",
       "0  P_0000020  2021-06-01 02:34:18      4.6\n",
       "1  P_0000020  2021-06-01 06:39:31      6.1\n",
       "2  P_0000020  2021-06-02 08:17:35     11.7"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pat_id</th>\n",
       "      <th>lab_date</th>\n",
       "      <th>labreport_name</th>\n",
       "      <th>labitems_code</th>\n",
       "      <th>labitems_name</th>\n",
       "      <th>lab_value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>P_0000001</td>\n",
       "      <td>2020-07-02 09:15:29</td>\n",
       "      <td>糖化血红蛋白</td>\n",
       "      <td>1591</td>\n",
       "      <td>糖化血红蛋白A1c</td>\n",
       "      <td>8.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>P_0000001</td>\n",
       "      <td>2019-11-16 11:18:23</td>\n",
       "      <td>糖化血红蛋白（住院）</td>\n",
       "      <td>1591</td>\n",
       "      <td>糖化血红蛋白A1c</td>\n",
       "      <td>8.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>P_0000001</td>\n",
       "      <td>2018-11-20 17:30:27</td>\n",
       "      <td>糖化血红蛋白</td>\n",
       "      <td>1591</td>\n",
       "      <td>糖化血红蛋白A1c</td>\n",
       "      <td>10.1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      pat_id             lab_date labreport_name  labitems_code labitems_name  \\\n",
       "0  P_0000001  2020-07-02 09:15:29         糖化血红蛋白           1591     糖化血红蛋白A1c   \n",
       "1  P_0000001  2019-11-16 11:18:23     糖化血红蛋白（住院）           1591     糖化血红蛋白A1c   \n",
       "2  P_0000001  2018-11-20 17:30:27         糖化血红蛋白           1591     糖化血红蛋白A1c   \n",
       "\n",
       "  lab_value  \n",
       "0      8.30  \n",
       "1       8.9  \n",
       "2      10.1  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pts = pd.read_csv('./data/patient_list.csv')\n",
    "glu = pd.read_csv('./data/glucose.csv')\n",
    "lab = pd.read_csv('./data/lab.csv')\n",
    "print(pts.shape)\n",
    "print(glu.shape)\n",
    "print(lab.shape)\n",
    "display(pts.head(3), glu.head(3), lab.head(3))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 年龄分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\anaconda3\\lib\\site-packages\\seaborn\\_decorators.py:36: FutureWarning: Pass the following variable as a keyword arg: x. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[Text(0.5, 1.0, '患者年龄分布情况')]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABtkAAAKDCAYAAAB/gWWNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAACNnklEQVR4nOz9eXiV9Z0//j+BEEJAURBFEBCXqkWta53P16VTrNJWrcsotR3rjNpVFLuq1LVTKS5tB5dqsWrVjlWr4zZitVasWq21tkVcUCugRiw7BpNIQpbfH/6SFkmAk4Uk8Hhcl5dw7vd53q9zck4S8sx93z0aGhoaAgAAAAAAAKyznp09AAAAAAAAAHQ3SjYAAAAAAAAokJINAAAAAAAACqRkAwAAAAAAgAIp2QAAAAAAAKBASjYAAAAAAAAokJINAADoVmbOnJlnn302K1eu7JD85cuXZ/ny5amrq2vX3GeffTaLFy9u18yNzbx58/Luu+929hgAAABJlGwAAEA38/Wvfz3//u//nurq6g7J///+v/8v++67b1566aV2y6yvr8+ZZ56Zgw46KCeddFIqKyvbLfufPfXUU7nkkksyc+bMNa771re+lf/+7//OG2+80ab9vfzyy6vdtmzZstxyyy25+uqr25TdnB//+MfZf//9853vfKfNJWh1dXVOPfXUnHrqqampqVnr+iuvvDKnnnpq/vjHP7ZpvwAAwIajqLMHAAAAKES/fv2SJH379u2Q/NLS0pSXl6e0tLTFNRUVFUmS/v37r1PmQw89lHnz5iVJDj300KbH0N5eeuml3HDDDdl3331bXFNXV5dHH300lZWV2W233TJy5MhW7auysjInnHBCRo4cmYsvvjg77rhjkvdLtosuuijFxcU57rjjMnjw4Fblf9DKlSvz+OOPp7q6OsOHD0+vXr3alNenT5888cQTqampWSWrvLw8PXr0SElJSYqKitKz5/u/m/q3v/0tjzzySI455pimtXV1dVmxYkWqq6vTv3//FBcXrzLvD37wgxx00EH5+Mc/vsq+p0+fnt/85jcFzXvuueeu8+sNAABYP5RsAABAl3LrrbfmwgsvXOu6D3/4wy1u22OPPXL77be3av+9e/de5f/NueiiizJ79uxMnTo1AwcOXGNeTU1NpkyZkiT56Ec/ms997nOtmqs5b7zxRubNm5cPf/jD2WyzzZpKnjWVMTNnzmw6kq6hoaHV+77rrrvy7rvvZuHChdlmm22abt9uu+3y6U9/Ovfff3+mTJmSSZMmtXof/+zXv/51li9fnk033TQnn3xyu2T2798/y5cvX6VkO+OMM/KHP/yhxfuMHz++2dtvvvnm7Lfffk1/nzJlSn75y1/mvvvuyx133JHtttuuadvcuXNz9913FzTrueeeW9B6AACg4ynZAACALqXxCLWddtqp2SJt+vTpKS8vz9FHH73atqqqqjz00EOrHFHUnKqqqnzrW99KaWlpioqK0qNHj6ZtjQXUD3/4w5SWlqauri41NTXZeeed87WvfS2//vWvmwqSe+65Z62Fz89//vO8/vrrSZIePXrknHPOWeP6RitXrlzlv2uuuabpqKpG99xzT66++urccsst2WeffZrKorvuuqvpqK8999wzn/70p5vu03gE1TbbbJPJkyfnwAMPTElJyTrN1Oi9997L1KlTkyQTJkxY7ajCb3zjG/nNb36T//3f/80RRxyRf/mXf1lr5rJly9KnT5/07t07vXr1Wu2x3nTTTUmScePGrfWIroaGhtTW1mblypWpr69vcX1xcfFqZerHPvaxbLfddunTp88qR7JNnz49r776ag4//PCmUvGfj2T74BF7X/ziF/Ob3/wmb775Zk4//fTceeedTc9T4z6PPvroXHzxxS0+jrfeeisHH3xw06wAAEDXomQDAAC6lMbC5+Mf/3i+8Y1vrLb9yCOPTHl5ebPlxFtvvbVOJVttbW2mT5++xjUPPfTQKn9fuXJlXn755Xz3u99Nkpx++ulrLdhefvnlXHXVVUmSTTfdNLNnz87s2bNXWbN06dLU19dn8803X+WIqrq6ujQ0NKSmpibV1dWpr69frXhqfK769OmTJE3bH3nkkdTX16empiY9e/ZsKtlqampy3333Zcstt8zPf/7zHHHEEbn00ktz/vnnr/FxfND111+fRYsWZdttt2227Nxmm21y0kknZerUqTnzzDNzzz33rPWIv3Up4pLkuuuuy3XXXbfOs+6111659dZbm93Wq1evpoK1rKwsm222WU488cSmwq9Pnz5Nr6V58+bl1VdfzZFHHpmDDjoo9fX1qa6uzooVK9K7d+/VirzNN988P/3pTzNu3Li89tpr+a//+q9Mnjy5ab+FWtORlQAAQOdQsgEAAF1KfX19mzPWVmJssskm+cMf/pD+/funV69eq6w/6KCDsmDBgjzyyCPZZpttUltbm5qamrz99tv50pe+lKqqqpx66qk57bTT1riPFStW5Fvf+lZqamoybNiw3Hfffc0eUbX//vtn8eLFufPOO1c57WIhj7OxgGks2X72s59ljz32WG39HXfckcWLF+cb3/hGRowYkS996Uu58sors/fee+ewww5bp32+/PLL+elPf5ok+fa3v52ioub/WTl+/Pg8+OCDeeONN3Laaafl5z//eVMZ2JzNNtusqdTq2bPnKoXi66+/noaGhgwePLjg65INHTp0lb//8pe/zLRp0/LlL3+56bZbbrkl//Vf/5Xvfe97OeCAA5qOHmvOl770pdVuO/nkk3PWWWetdvv222+fb33rW/ne976Xu+66KwcffHA+8YlPrHLk5LpqzX0AAICOpWQDAAC6lPfeey9J8tOf/rSpzGnOTjvt1OK2mpqaNe6jR48eaz2yqlFRUVEWL16cr33ta01F2xlnnLHW+/3gBz/Ia6+9lp49e+biiy8uuBxaF40lW2MhtaYiprKyMtdcc0023XTTnHDCCUmSr371q3n88cfz3e9+N/3798/HPvaxNe6vpqYmZ555ZlauXJmPfvSjOeSQQ1pc26dPn1x22WX593//9/z5z3/O6aefnssvv3y1U0s2+uMf/9js7Q888EC+8Y1vZPPNN8///d//ZfPNN8+MGTPy1FNP5UMf+lA+8YlPrHHmD3r55Zfz7LPPrlKy7bPPPkmShx9+OGPHjs1nP/vZFBcXr3I6yeZOF1lbW5vq6upmC81Gxx9/fO69997stddeOeigg5IozAAAYEOhZAMAALqUHXfcMV/96ldb3H7nnXdm8eLFa1zzwaOX2uLll1/OV77ylcyfPz+nnHJKvv3tb6/1Ptdee21uv/32JO8f+fTRj3603eZJkoqKivz973/P8uXLV7m9sbxpvCbZihUrkiT9+/fPFVdckUWLFuWss85qKvyKiory4x//OJ/73Ody6qmn5vvf/36OOeaYFvd75ZVX5pVXXklpaWkuuuiitc75kY98JBdddFEmTpyYxx57LCeccEKuuuqqbL311uv0OJcvX54f/OAHSZJzzz03m2++eZLkxRdfzOWXX55jjz224JKt8fp4u+66a9NtH/rQh7Lpppvm2WefTUVFRc4666wUFxevcm24D54uslFdXV1qa2uzdOnSbLrppqsd2dezZ8/8/Oc/T2lpadNtDQ0NBc0MAAB0TUo2AACgS9l9992z++67t7j9d7/7XdMpDwsxa9asnHTSSendu3fTf80dUbRkyZIkyX/+53+mqKgof//737NixYr06NEj06dPb7qWW11dXWpqalJTU5OLL7646SiwO+64Iz/60Y+SvH+E1IQJE9Z5xvr6+jQ0NKS+vj61tbVN/zWWS41mzpyZk046qenvRxxxxCrbjz/++KY/n3jiiTnkkENy8803Z6eddsqJJ56Yv/71r/nlL3+ZSy65JNtss01uvPHGnHjiiZk4cWKmTZuW888/PyNHjlwl84EHHsjPfvazJMl555232vaWHHXUUUmSc845Jy+88EI+85nP5Nxzz82RRx651vtOmjQpixYtyqc+9akcfvjhTbc3nnZyTaefbMnf/va3DBkyJIMGDWq6rUePHpk6dWoGDBiw1tKuudNFNnrggQey/fbbr3b7PxdsSetOiVpXV9eqa7kBAAAdR8kGAAB0Kbvssss6lRBrOl1k8v7pGv/t3/6t6e91dXWprKxMaWlp6uvrs3LlymZLtkGDBqW+vj5lZWVJ3r/e2VZbbZUkqaqqalrXWLDV1NRk5cqVTbcfcMABOe200/J///d/mTJlSq699tpcfvnla308LV0HbIsttsiTTz65ym3Dhw/PN7/5zfTp0ydFRUXp0aPHKkexNR7JVlNTk0033bRp7aWXXpqioqJcddVV+f3vf59ddtklJ598crbffvvcdttt+fKXv5xFixaltrZ2lf394Q9/yNlnn52GhoZ8+tOfzsEHH5yamprVrmfXkqOOOioDBw7MN7/5zSxfvjxnnnlmbrvttkyaNCnbbbdds/e54YYbcs8992Tbbbdd7ai5D54mc10tWLAgS5cuzZgxY1bbttdee2XZsmU5/vjjU1JSkqKiotWuDdecxkK0uro6m2666TrNUVdXV9DcyfunplSyAQBA16JkAwAAupS+ffumsrIyo0aNanb7vHnzUlNT0+L2RYsWpaKiYrVrf+266655/vnn17r/6urqfP3rX8/06dOz884757LLLsuHPvShdZ5/6623zumnn55TTz01vXr1SklJSZJkzz33zH777bfa+ptvvjlVVVX593//9/Tr16/paLaVK1empqam6f7/bPjw4TnxxBNTVlaWTTbZpOn0i8cff3y23377nHPOOU1HT82aNStbbbVVzj777Oy8885JkgsuuCBHHHFEpkyZkkMOOSTDhw/P8OHDc9ttt2XFihVNpWKSPP744znttNNSXV2dvfbaK7vvvnurTn+555575le/+lVOO+20zJ49O1VVVdlyyy2bXfvII4/ksssuS5K8++67OfbYY1fZXlFRkSS577778vvf/77ZjEMOOSTf+ta3VrntT3/6U5Jk9OjRzd5n8803z/e+9711f1Ct1HjNwLvvvjt33333Ot1n5cqVrTpyDwAA6DhKNgAAoEvp3bt3kuTBBx9sdvuRRx6Zl19+ucXtZ599du6+++6mnEKUl5fn9NNPz5///Od89atfzfjx41NcXFxwTvKPo60a77/PPvs0e4rLO++8M1VVVTn55JOzzTbbrHP+q6++mnHjxmXcuHH5/ve/n+rq6jz33HPp1atXSktL85e//CWf+9znctxxx+WOO+5Y5YisESNGZOLEienfv3+GDx/edPuAAQMyYMCAVfbz7rvvpnfv3hk5cmSuueaa3H///endu3f69OmTXr16paqqKitXrkxpaWmzz1V1dXXee++9DBs2LNttt13uvPPOfP/7389JJ53UdG24f/ab3/wm3/zmN5uOZlyyZEnTKTw/qLy8POXl5S1u+6Bly5Zlm222abFka3TuuefmjjvuWOOaRptuumlTebcml112WQ499NB85CMfyXbbbZejjz46SfLYY49l6dKlOeSQQ9K/f//Mnz8/f/jDHzJixIjsvffeTfd3HTcAAOh6lGwAAECX0niUz9lnn93s9r///e9r3P7nP/85SeHXvZo5c2a+/vWvZ968edlll12yYMGCnH/++c2uHTx48GpHSbWk0FMarqvGI9wai6oZM2akvr4+n/zkJ5P843plm2yySZLkkksuSd++fdOrV6+mU0suXbo0V199dVPm0KFDm66h1uiwww7L9ttvn0GDBmWzzTbLCSeckBNOOKFp+/HHH5+//vWvueiii3LYYYetNucll1ySG264oenouNLS0kyePLnZx3TnnXfm/PPPT11dXY455pjcddddGTZsWNN18BrdddddmThxYk488cScc845q2y74447cu655zZb+H3hC1/IF77whWb3/c8an9tPf/rTGTFiRIvrfvazn63T0WXPP/98rr/++tx000353e9+l4MPPrjp9KCf+cxnsnTp0pxzzjnZeuut8+ijj+YPf/hD9t5771x88cVrzQYAADqPkg0AAOhS3nvvvSRZ62n01rb9n6+f1pKKiop86UtfyrvvvpvXX3+96dpqs2bNyqxZs1q830477bTOJVtHXUerqOj9f841ljxPP/10kvdPifiFL3yhaXvfvn1TX1+fG2+8MX379l2t9GtoaGg6/eKVV17Z7L4aTzPZnMZr17V0+s6FCxcmSYYMGdJiRk1NTSZPnpxf/vKXSZJjjz02EydOzF133dXifdamtUcg/vN9P/OZz+TjH/94i+tuuOGGdSrZLr300jQ0NOTYY4/NFltsscq2xiPu+vXr1+p5AQCAzqFkAwAAupSXX355jdsbTxf5yiuvtHofVVVVufvuu3P11Vdn8eLFSd6/DtjaTtc4e/bsfPrTny7o2liNR421t8ayrPG0mL/+9a9TWlqahx56KI8++mjTaSCLiopSVFSUl156qdlZpk2blm9+85v5l3/5lxx66KEFzfD3v/89ixcvTu/evbPddts1u2ZdSrYbb7yxqWD7whe+kHPOOWedStI1acsRhI3F6Fe/+tW1rl3baUl/85vf5JlnnsmAAQNyxhlnrLJt+fLlmT9/fjbbbLNsuummrZ4XAADoHEo2AACgWzn66KMzZ86cVt33+eefz7333pt77703y5cvT79+/VJcXNx0isp11dLRafPnz88FF1yQ3r17N/3XeKTX448/nmXLlq12n8ajyH70ox+ltLR0te319fWpra3NihUrcuSRR+YTn/hEkn+Ud7169cqzzz6buXPn5uyzz84vf/nLTJo0KVddddUqszZXsNXW1uaKK65Ir169Vjvt4rr4/e9/nyTZfffdm06x+EHrUrJ9+ctfTq9evbJixYqMHz++4DnaW2NBty6ni1yT6urqXHLJJUmS8ePHZ/PNN19le+O13D70oQ+1ZVwAAKCTKNkAAIAu44477shuu+3WdHrC5557LitWrMgOO+yQQYMGJUmGDx+eqVOn5uijj86ee+65WsbMmTMzefLk/OQnP8nAgQObbm+8Nljy/jW3TjrppHz5y1/OUUcdlQULFuTSSy9ttuT6Z++++26Slo9Oq6qqyhNPPJHi4uIUFxenR48e6dmzZ7bYYossWbIkv/vd71a7T2PB94c//KHZ8q6uri51dXWprq7OPvvs03R74ww9e/bMT37yk/Tu3TtHHHFESkpKcuGFF+a2225bbdZf/OIX2XfffZue31/+8pd5/fXXc8IJJ7Sq6Ln11luTZI2nVGws2RqvydaSU045peD9d7R1OV3kmvzsZz/LW2+9lVGjRuXzn//8atvvu+++JMnHPvaxtg0KAAB0CiUbAADQJZSXl2fSpElZsWJFLrvsshxxxBE566yzMnfu3PzkJz9pOoLr3nvvzdKlS3PmmWfm3nvvXaUYq6qqyle/+tUsWbIk3/nOd3Ldddc1lUwTJkzIX//61+y77775z//8z6bSrtFDDz3U5sew3Xbb5aWXXiroPvvvv38WL16cO++8c62nq/xn9fX1Sd6f+4UXXsinPvWpbLHFFjnqqKPyu9/9LkceeWRTCZYkr732Wi655JIUFxfnyiuvzA477JApU6Zks802y4QJEwqaOXm/IHrxxRdTXFycf/u3f2t2TWVlZaqqqtKrV6/VrkW2NnV1dQXPlLx/dF57ue+++zJjxowWt69pxjlz5mTq1KlJkrPOOmu100q+/PLL+c1vfpOioqJ86lOfWussy5cvzyabbNJhpx8FAAAKp2QDAAC6hJtvvjnvvfdeNt9886ajhxpPQfjPRdoPfvCDPP/883nzzTdz44035tRTT83DDz+cAw88MKWlpfnhD3+YL37xi/n973+fqVOnNl1Xq2/fvk1HdzWnkGuydQWNJdvBBx+c4447Lh/+8IeTvP84f/rTn+aNN95YZf0OO+yQn/zkJzn99NPzla98Jdtvv30qKyvzve99LwMGDCho36+99louuuiiJMlXvvKVVY4Y/GcLFixIkgwePLjFU2y2pJCy7N13382SJUuydOnSPPjgg0nS4ukrC/HAAw+06n51dXU555xzUlNTk/3333+1o+GqqqoyceLE1NfX55hjjsmwYcPWmvm///u/ue222/Jv//Zv+fKXv9yquQAAgPalZAMAADrdokWLcuONNyZJTj311PTv3z9J0qdPnySrnvKwf//++eY3v5kXXnghX/ziF5MkV111Vc4///x885vfzHHHHZdvfetbufTSS3PFFVdkn332WeU0ixuKxqOoioqKcvzxx6e2tjZvv/125s+fn/nz52fWrFmrrEvePy3h1KlTc+qpp+bll1/O9ttvn3HjxhW03xdffDFf+cpXUl5enn333XeNhc/LL7+cZM3XY2vJypUrW9zW0NCwyt/nzZuXo48+uql4TJLddtut4H1+0E9/+tM1ni7yX//1X5u9/Re/+EX+8pe/pHfv3qtd62758uU544wz8tJLL2Xw4MH5xje+0WzGB4+Smz9/fl5//fU888wzSjYAAOgilGwAAECnu+CCC1JRUZFtt902n/vc55puLyp6/58sL730UvbZZ5+mU+4dccQROeKII9LQ0JCXXnops2fPXqWUOfnkk/PYY4/lL3/5S9N91+ZHP/rROl+T7YMlT1s0HrFVaGbj473pppty8803Z8mSJauUTI0+WNb8v//3/zJ16tR88YtfzOuvv54HH3xwnY7Oq6mpyU033ZQrrrgiNTU12X333XP11VenuLh4lXXPPvtsGhoasmjRolx++eVJkp122qmgx9a4v5Y0Ps7G/++8887ZZZdd8uKLL2bbbbfNscceu07XOXvvvfeaPWKuueexOStWrGj2iLnjjjsub7/9dvr27Zvtt9++6fbp06dn8uTJefPNN9O3b99MmTJltdNoNr7mZ86cmb///e/p379/Fi9enEcffTRJy8UeAACw/inZAACATrVy5crsvPPOefzxx1e7dlXjEW2XXnppLr300jXmbLnllk1lUY8ePXLeeeelsrIye+yxxxrv11jmFHJqwHUtYdZFY1nWmsw999wzw4YNy7BhwzJkyJAMHTo0W265ZbbYYouUl5fn8MMPb/aIsI9+9KP58Y9/nAkTJuTMM89Mv379Wiylamtrc9NNN+V//ud/8vbbbydJPvWpT2Xy5Mnp27fvauvvu+++3H777U1/79+/f/7jP/6j4Mc2dOjQPPbYY82eZrLxufrnAvHKK69M//79Czr1ZVVVVbMl29quBzd//vy88MILeeedd7LZZputtr1fv3757ne/2/T33/72t7nqqquaji7cbLPNcvXVV2fvvfde7b477LBDevbsmddff321Qm2TTTbJ4Ycfvg6PDAAAWB+UbAAAQKfq3bt3JkyYkMMOO2yVo36S5JhjjsmiRYtSVVXV7H179uyZAQMGZNddd80JJ5yQfv36NW3bcccd12n/1dXVSQq7JtuajrIqVGMJVmjm6NGj13iNuffeey/J+0dbNecTn/hEvve97+X73/9+5s+f32JOUVFRttxyy8yfPz+bb755zjrrrBx99NEtrj/hhBPy4IMPZtttt80BBxyQY489NkOHDl3HR/UPvXr1avE0k43P1T8XiOtyXbN/VldX1/Tc1NXVrVLmre1j8cgjj+S//uu/krxf7q7Nhz/84aaC8pBDDskFF1yQwYMHN7t26623zpVXXplf//rXmT9/fqqrq1NaWtp0lGdzpR4AANA5lGwAAECX8MGCLUnGjh2bsWPHduh+G0u2jr5PSxqPpGrPzCQZOXJkXnnllTWuOe6443LQQQdlq622WuO6I444IgMHDsxHPvKRpqMLW/KhD30ozzzzTMHzFqKxBGvLc7ZixYqmx11bW7tKydZSMdnokEMOyTXXXJP99tsv48ePX+u+hg4dmgsvvDDDhw9fp2vFfeITn8gnPvGJta4DAAA6V4+G9ryYAAAAAAAAAGwEHMnWgj//+c9J0uz5/wEAAAAAANhwNV6rublrKTfqub6GAQAAAAAAgA1FlzySbdasWXnyySezfPny9O/fP/vvv39Gjx69XmdoPIJtjz32WK/7BQAAAAAAoHPNmDFjrWu6VMlWXV2dCy64IHffffcqt//oRz/KYYcdlkmTJqVv375Ntz/00EOZMGFCi3l77bVXbr311g6bFwAAAAAAgI1TlyrZJk2alLvvvjujR4/OqaeemmHDhmXGjBm54oorMm3atGy11VY566yzmtY///zzSZLhw4enX79+q+Vtu+2262t0AAAAAAAANiJdpmSbOXNmbr/99owaNSq/+MUvmkqzXXbZJTvuuGP+/d//Pb/61a/yne98Jz17vn8pueeeey5Jcs0112THHXfstNkBAAAAAADYuPTs7AEa3X777UmSb33rW6sdlbbPPvukuLg4FRUVWbhwYZKkvr4+L774YkpKSjJq1Kj1Pi8AAAAAAAAbry5Tsl100UWZPn16xowZs9q2JUuWpKamJj169MjAgQOTJLNnz05lZWV22WWXFBV1mQPyAAAAAAAA2Ah0mXaqR48eGTZsWLPbbrzxxiTJfvvtl+Li4iTvn14ySfbcc8/1Mh8AAAAAAAA06jIlW3PefPPN3HLLLbn55puz2Wab5fzzz2/a1ng9ttmzZ2fcuHGZM2dO6urqMnLkyIwdOzYnnnjiaqedBAAAAAAAgPbQo6GhoaGzh2jOEUcckVdffTVJsvnmm+eWW27J9ttv37T9M5/5TF555ZUkyejRo7PLLrukqqoqTzzxRN59992MHDkyt956awYNGtSq/c+YMSN1dXXp379/2x8MAAAAAAAA3UZFRUV69eqVPfbYo8U1XeaabB909NFHZ//9909RUVGWLVuW888/P8uWLUuSVFZWZs6cOSktLc11112Xu+66K5MmTcp///d/Z/r06dlnn33yxhtv5JJLLunkRwEAAAAAAMCGqMseydZo3rx5mTBhQl544YXsu++++Z//+Z8kSX19faqqqpo90uztt9/OoYcemiR58sknM2DAgIL3O2PGjCRZY0MJAAAAAADAhmddeqIueyRbo2HDhuXqq69OUVFR/vSnP+Wvf/1rkqRnz54tnspx6NChGTVqVFauXJnXXnttfY4LAAAAAADARqDLl2xJstVWW2XnnXdOksydO3ed7tO7d+8kyYIFCzpsLgAAAAAAADZOXaZku/DCC3PyySenpqam2e21tbVJkj59+uSFF17ID3/4w7z88svNrq2pqckbb7yRJK06VSQAAAAAAACsSZcp2ebOnZsnn3wyN91002rb3njjjfztb39Lkuy666555pln8rOf/Sy33XZbs1n3339/Kioq0qdPH9dUAwAAAAAAoN11mZLtpJNOSpL893//d26++ebU1dUlSZYsWZKzzz47dXV1GTNmTEaOHJkjjzwyffv2zR133JGnnnpqlZynn346kydPTpKceOKJ6dev3/p9IAAAAAAAAGzwejQ0NDR09hCNLrvsslx33XVJkr59+2brrbdOWVlZVq5cmdGjR+e6667LwIEDkyT33HNPJk6cmCTZe++9M2jQoLz99tuZOXNmkuSoo47KpEmTUlRU1KpZZsyYkSSOhAMAAAAAANjIrEtP1KVKtiSZPn16brzxxjz//POpra3NdtttlyOPPDInnHBCiouLV1n7wgsvZOrUqfnLX/6S5cuXZ/Dgwdlzzz0zbty47Lfffm2aQ8kGAAAAAACwceqWJVtXoWQDAAAAAADYOK1LT9RlrskGAAAAAAAA3YWSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAApU1NkDAAAAAHRXlTW1mVv+XptzRg3om37FfkwDANCd+O4NAAAAoJXmlr+XCx5/pc053ztop+w6eJN2mAgAgPXF6SIBAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKFBRZw/QnFmzZuXJJ5/M8uXL079//+y///4ZPXp0Z48FAAAAAAAASbpYyVZdXZ0LLrggd9999yq3/+hHP8phhx2WSZMmpW/fvqtsW7BgQaZMmZLHH388y5cvz4477pjx48fn4IMPXp+jAwAAAAAAsBHpUqeLnDRpUu6+++6MHj06P/nJT3LPPffkwgsvzMCBAzNt2rRcccUVq6wvKyvLsccem7vuuivl5eUZNmxY/va3v2X8+PG58847O+lRAAAAAAAAsKHrMiXbzJkzc/vtt2fUqFH5xS9+kU984hPZZZdd8rnPfS5XXnllkuRXv/pV6uvrkyT19fU5/fTTs3DhwowePTq//e1v8+CDD+bhhx/OyJEjM2nSpMybN68zHxIAAAAAAAAbqC5Tst1+++1Jkm9961vp16/fKtv22WefFBcXp6KiIgsXLkyS3H///Zk1a1ZKS0tzzTXXZMiQIUmSIUOG5LzzzktVVVWuvfba9fsgAAAAAAAA2Ch0mZLtoosuyvTp0zNmzJjVti1ZsiQ1NTXp0aNHBg4cmCSZNm1akuSwww7LVltttcr6Aw44ICNGjMijjz6ahoaGjh8eAAAAAACAjUqXKdl69OiRYcOGpVevXqttu/HGG5Mk++23X4qLi5MkL774YpLkoIMOajZvjz32yIIFC1JWVtYxAwMAAAAAALDRKursAdbkzTffzC233JKbb745m222Wc4///wkSW1tbRYvXpwk2XnnnZu974gRI5Ikb731VtOfC1VXV5dXXnmlVfcFAAAANmzDhw9v17yqqiq/LAwA0EXU1dU1e2DYP+uyJdsRRxyRV199NUmy+eab55Zbbsn222+fJFmxYkXTaSA/eKrIRptuummS5O23314P0wIAAAAAALAx6bIl29FHH53f//73+eMf/5hly5bl/PPPz1VXXZXNN9+8aU3Pnj3Tp0+fZu9fUlKSJKmsrGz1DL169cpOO+3U6vsDAAAAG7jKd9stqrS01M8hAAC6iBkzZqx1TZe5JtsHnXzyybnhhhvym9/8JrvuumueffbZnH766UnSdF22xv83p/EQvurq6o4fFgAAAAAAgI1Kly3ZGg0bNixXX311ioqK8qc//Sl//etfU1xcnJKSkqxYsaLFI9UqKiqSvH/9NgAAAAAAAGhPXb5kS96/7trOO++cJJk7d26SZMiQIUmSt956q9n7LFq0KMn7p1oAAAAAAACA9tRlSrYLL7wwJ598cmpqaprd3nhEWuM12HbdddckyQsvvNDs+sZzZW699dbtPCkAAAAAAAAbuy5Tss2dOzdPPvlkbrrpptW2vfHGG/nb3/6W5B/l2kEHHZQkue+++1Zbv2zZssycOXOV9QAAAAAAANBeukzJdtJJJyVJ/vu//zs333xz6urqkiRLlizJ2Wefnbq6uowZMyYjR45MkowdOzYDBgzI008/nWnTpq2SNWXKlNTU1GT06NEZNmzY+n0gAAAAAAAAbPCKOnuARv/6r/+aL37xi7nuuusyadKk/PjHP87WW2+dsrKyrFy5MqNHj86kSZOa1peUlOTb3/52zjvvvJx55pmZMWNGRo8enenTp+ehhx5Kkpx22mmd9XAAAAAAAADYgHWZki1JvvOd72TvvffOjTfemOeffz5vvfVWtt9++xx55JE54YQTUlxcvMr6cePGZdGiRbn66qtz8803r7LtjDPOyJgxY9bn+AAAAAAAAGwkulTJliRjxowpqBwbP358xowZk9tuuy1lZWUZOnRojj322Oyxxx4dNyQAAAAAAAAbtS5XsrXGLrvsku9973udPQYAAAAAAAAbiZ6dPQAAAAAAAAB0N0o2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEo2AAAAAAAAKJCSDQAAAAAAAAqkZAMAAAAAAIACKdkAAAAAAACgQEWdPQAAAABAR6qsqc3c8so254wa0C/9iv0oBQCA9/nOEAAAANigzS2vzPmPv9jmnP86aHR2HTygHSYCAGBD4HSRAAAAAAAAUCAlGwAAAAAAABRIyQYAAAAAAAAFUrIBAAAAAABAgZRsAAAAAAAAUCAlGwAAAAAAABSoqLMH+KAHHnggN910U2bNmpX6+vr07ds3++67byZMmJCdd955lbUPPfRQJkyY0GLWXnvtlVtvvbWjRwYAAAAAAGAj06VKtssuuyzXXXddkmTYsGEZNmxYXnnllTzyyCN58sknc/3112efffZpWv/8888nSYYPH55+/fqtlrftttuul7kBAAAAAADYuHSZku2xxx7Lddddl379+mXy5MkZO3ZskuTdd9/N+PHj88c//jHnnHNOHnrooab7PPfcc0mSa665JjvuuGOnzA0AAAAAAMDGp8tck23KlClJkssvv7ypYEuSTTbZJBdccEGS5PXXX8/s2bOTJPX19XnxxRdTUlKSUaNGrfd5AQAAAAAA2Hh1iSPZqqurc/jhh+fggw/OgQceuNr2YcOGNf15+fLlSZLZs2ensrIye+65Z4qKusTDAAAAAAAAYCPRJdqpPn365JRTTmlx+6uvvtr056222ipJMnPmzCTJnnvu2bHDAQAAAAAAwAd0iZJtbe69994kyW677ZahQ4cm+cf12GbPnp1x48Zlzpw5qaury8iRIzN27NiceOKJ6devX6fNDAAAAAAAwIary5dsc+bMya9+9askyamnntp0+4wZM5Ikjz32WEaPHp2xY8emqqoqTzzxRKZMmZK77747t956awYNGtTqfdfV1eWVV15p0/wAAABA5xk+fHi75lVVVaWsrKzDswEA6Fx1dXXp1avXGtd06ZKttrY2Z599dmpqajJmzJiMGTMmSVJZWZk5c+aktLQ0V1xxxSrXcVu+fHm+9rWv5dlnn80ll1ySSy+9tLPGBwAAAAAAYAPVpUu2H//4x3nuuecyePDgTJo0qen2fv36ZebMmamqqkr//v1Xuc+mm26ayy67LIceemgeeOCBnHPOORkwYECr9t+rV6/stNNObXoMAAAAQCerLG+3qNLS0lV/VlD5bsdlAwDQaRrPqLgmPTt+jNb59a9/neuvvz69e/fO5ZdfnoEDB66yvWfPnqsVbI2GDh2aUaNGZeXKlXnttdfWx7gAAAAAAABsRLpkyfbiiy9m4sSJSZLzzz8/e++9d8EZvXv3TpIsWLCgXWcDAAAAAACALleylZWV5Stf+Uree++9nHzyyRk3btxqa1544YX88Ic/zMsvv9xsRk1NTd54440kafWpIgEAAAAAAKAlXapkmzdvXk466aQsWrQoY8eOzXe+851m1z3zzDP52c9+lttuu63Z7ffff38qKirSp0+f7LHHHh04MQAAAAAAABujLlOylZeX5z/+4z9SVlaWvffeO5dddll69mx+vCOPPDJ9+/bNHXfckaeeemqVbU8//XQmT56cJDnxxBPTr1+/Dp8dAAAAAACAjUtRZw/Q6Prrr09ZWVmSZNGiRc2eJjJJjj/++Hzuc5/LhRdemIkTJ+aUU07J3nvvnUGDBuXtt9/OzJkzkyRHHXVUvv71r6+v8QEAAAAAANiIdJmS7YUXXmj685tvvtniusWLFyd5v0TbYYcdMnXq1PzlL3/Jc889l8GDB+fwww/PuHHjst9++3X4zAAAAAAAAGycukzJdsMNNxR8n1133TVXXnllB0wDAAAAAAAALesy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996Ul5e313wAAAAAAADQ5bS6ZHvqqafyr//6rznrrLNWue3ss8/OoYcemscee6xdBgQAAAAAAICuplUl22uvvZavfvWrWbhwYRoaGppuHzp0aAYNGpTy8vKcccYZmTt3brsNCgAAAAAAAF1Fq0q2qVOnpqamJkcffXR++MMfNt1+zDHH5PHHH8/nP//5rFixItddd127DQoAAAAAAABdRatKtmeeeSZ9+/bN+eefny233HLVwJ49853vfCd9+vTJU0891S5DAgAAAAAAQFfSqpJtyZIlGTJkSPr27dvs9r59+2brrbfOokWL2jQcAAAAAAAAdEWtKtk22WSTzJ8/P/X19c1ur6ury4IFC7LJJpu0aTgAAAAAAADoilpVsu25555ZsWJFbr755ma3/+IXv8h7772Xvfbaq03DAQAAAAAAQFdU1Jo7nXTSSXn00Ufzwx/+MMuWLcshhxySgQMHZunSpXn44Ydz3XXXpUePHjnppJPae14AAAAAAADodK0q2fbdd9+MHz8+V111Va699tpce+21q2xvaGjIaaedln322addhgQAAAAAAICupFUlW5Kcdtpp2WGHHXLttddm1qxZaWhoSI8ePfLhD384X/rSl/LJT36yPecEAAAAAACALqPVJVuSfPKTn8wnP/nJrFixIuXl5RkwYEBKSkraazYAAAAAAADoktpUsjUqKSlRrgEAAAAAALDRaJeSrSPMnz8/xx13XPbff/9cfPHFza556KGHMmHChBYz9tprr9x6660dNSIAAAAAAAAbqS5ZslVUVOTLX/5yFi5cuMZ1zz//fJJk+PDh6dev32rbt912244YDwAAAAAAgI1clyvZFi5cmNNPPz2vvPLKWtc+99xzSZJrrrkmO+64Y0ePBgAAAAAAAEmSnp09wD+bMWNGjjnmmDz33HPZa6+91ri2vr4+L774YkpKSjJq1Kj1NCEAAAAAAAB0sSPZrr322qxYsSJXXHFFKioq8pe//KXFtbNnz05lZWX23HPPFBV1qYcBAAAAAADABq5LHcl2wAEHZNq0aTn00EPXunbmzJlJkj333LOjxwIAAAAAAIBVdKlDwD7/+c+v89rG67HNnj0748aNy5w5c1JXV5eRI0dm7NixOfHEE9OvX7+OGhUAAAAAAICNWJcq2QoxY8aMJMljjz2W0aNHZ+zYsamqqsoTTzyRKVOm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AMD60rOzBwAAAAAAAIDuRskGAAAAAAAABSrq7AHoembNmpUnn3wyy5cvT//+/bP//vtn9OjRnT0WdFveU91DR36cOvo10JVm7+j1HT1/V8nu6PzuPDvtw8cIug/vV+hevGehe/BeBdqLa7IVYP78+TnuuOOy//775+KLL27X9eu69oEHHshNN92UWbNmpb6+Pn379s2+++6bCRMmZOedd25TfnV1dS644ILcfffdq2077LDDMmnSpPTt27fNj/WD+zz22GPz6quv5pVXXml19kMPPZQJEya0uJ+99tort956a7vN/tRTT+Xkk09O3759c99992X48OGtyh4zZkzmzZu3Tvts7vlZl9kbGhpy66235r777svrr7+eFStWZMstt8x+++2Xr33taxk6dGirZk+SlStX5t57783//d//5aWXXkpNTU122GGHHHXUUfnsZz+b4uLiZu9X6Ot4wYIFmTJlSh5//PEsX748O+64Y8aPH5+DDz64zdmFPN5C8wt9TxWS3ZrXfGufm2Ttr/l1zW7ta76Q2Qt9Xbbmc9+6viY7+vNqa/LX9bksNLuj17f0+Fv6GlJofiHvqbbOvrb3UyH5hb6nCp290K8hhea39uvIP+9vTd9HFPL1o9DsRh31PVBbPme353ujNbN35Pq2fM9X6Czr+v3euuS39Xu+tc3e2u/31jW/0Pdqaz5O6/p+7ejv+zvye6xCszvya1lL2vP9V8j6ts6+tvdrIfmFvl8Lnb3Q92uh+W352rqun/da+/W10M+rhXyNXdfs1n59XZf81n6Nbc3Xm8b9rcvXtHXJb8t7sDXzr+t91raurV9f12WO1n6NXZfsdX2/tvZxrut7tSN/NtXRPwNoTf66vlfb4/u3xv211/eH6/pebY/Z1/QaLjS/o9cn6/5ebU12oV9bW/N5o5CvrW353r8jfpZcyNeQtv67ZW2fWwvJb6/3eOJItnVWUVGRL3/5y1m4cGG7r1/XtZdddlmuu+66JMmwYcMybNiwvPLKK3nkkUfy5JNP5vrrr88+++zT6vxJkybl7rvvzujRo3Pqqadm2LBhmTFjRq644opMmzYtW221Vc4666w2Pdbm9vnqq6+2uH1ds59//vkkyfDhw9OvX7/Vtm+77bZtyv9n7777br773e+moaEh3/72t1v8ZnBdsrfffvtssskmLW5fsWJFXn/99fTu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jfXKy8vx0EMPobCwEA899BA6dOhgJc7i4mJs374diYmJmDlzJhYtWoSnnnoKkyZNwsqVK3H55Zdj165dmDBhgvF7zJ07F/n5+YiLi8PMmTPx17/+FQ888AAef/xxvPfee7jqqquwdu1aX+9RmZdffhkVFRUYOnSo798MqKiowJo1a3D48OFqx77//nv8+9//jthUhePqq69Gu3btcPToUdx3333Izs4GcOI6z507F7NmzQIA3HnnnVG1ouVxbGwsatasGfK1tWrVAoCwRd6lR6T6Uk+F07aV85Fi95vz0nmX5nw4fRt5qXOdTHPS9rpqQ1/3Wkm1bY/3W0Mi6fv1VLTY/frJ5Lrqeiqatt8aEklf6leTHND1qqseJYAN/XBedekNE32X46VelcYi9aqN6xrOq1JtqVcl+lKvmq6pOn4tLCx02ve77LFsaNuuZS79JxlvErvEr7auayi/mmhL/CrVl/rVtEfRra8u76NtaYerrzb0w3nWRFviV6m+NM9M4td9zb333mvluoarryax63pWqm3j3jVaz+9nL0VH3w+29gBs6EvvtyJpu+wPbdSzSLHbWPek19XmeL/3ruG0TbxqEovEr672ek3il+alNHZpXtqYG+O1TxFt3njjDeV5nho1apT18VJtpZSaMGGC8jxPZWRkqIKCAuv6SimVm5ur+vbtqzzPU4MGDTLWf/7555Xneer++++vduzaa69VnucZa5eXl6vDhw+HPLZ7926VmpqqUlNT1cGDB430e/XqpTzPUw8++GDI49nZ2crzPHXppZeq77//XqRdlYKCApWamqrS0tJUcXFx1PHR9F944QXleZ7yPE/17dtXTZ48Wb3wwgtq0KBBwX+/5pprQs5fNO39+/er2267TXmepy6++GLVrVs3lZaWFtS9/vrrVUlJSdRzCJfHx48fV57nqfbt24d97euvv648z1PTp08XaYfCtQcD6HoqkrbfnI+m7yfno2lXRZrz0fRt5WWo62QjJ8Nph8L1uq2UPIcl2jbH+6khOvo2PBVO26+foulXxcRT4bT91BAdfYlfJTkg9arf/HLZAwUI51XX3pDqux4v8apUW+pVv3MfyatSbalXpfrS2iq5TlK/uu77XfZYNrSVslfLXPpPOl6qLfWr37mP5FepttSvUn2JX6XzKPWrjR4onGdt9Vfh/GpLX6nqnjXRlvjV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\n",
      "text/plain": [
       "<Figure size 2160x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "params = {'legend.fontsize': 'x-large',\n",
    "          'figure.figsize': (30, 10),\n",
    "          'axes.labelsize': 'x-large',\n",
    "          'axes.titlesize':'x-large',\n",
    "          'xtick.labelsize':'x-large',\n",
    "          'ytick.labelsize':'x-large',\n",
    "          'font.sans-serif':'SimHei', \n",
    "         'axes.unicode_minus':False}\n",
    "\n",
    "sns.set_style('whitegrid')\n",
    "sns.set_context('talk')\n",
    "\n",
    "plt.rcParams.update(params)\n",
    "pd.options.display.max_colwidth = 600\n",
    "fig,ax = plt.subplots()\n",
    "sns.countplot(pts[\"age\"],ax=ax)\n",
    "ax.set(title=\"患者年龄分布情况\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 血糖测量情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "一共有33.83%的患者上传了血糖数据\n"
     ]
    }
   ],
   "source": [
    "print(\"一共有{}{}的患者上传了血糖数据\".format(round(glu[\"pat_id\"].unique().shape[0]/pts[\"pat_id\"].unique().shape[0],4)*100,\"%\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "上传血糖的患者中，人均测量次数是：17.0\n"
     ]
    }
   ],
   "source": [
    "print(\"上传血糖的患者中，人均测量次数是：{}\".format(round(glu[\"glucose\"].count()/glu[\"pat_id\"].unique().shape[0],0)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测量次数>=8次的患者人均测量次数是:28.0\n"
     ]
    }
   ],
   "source": [
    "data=glu.groupby([\"pat_id\"])\n",
    "data1=data.filter(lambda x: x['pat_id'].count()>=8).groupby([\"pat_id\"]).size()\n",
    "print(\"测量次数>=8次的患者人均测量次数是:{}\".format(round(pd.DataFrame(data1).iloc[:,0].sum()/data.filter(lambda x: x['pat_id'].count()>=8)[\"pat_id\"].unique().shape[0],0)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [],
   "source": [
    "t1=pd.Series(data.filter(lambda x: x['pat_id'].count()>=8)[\"pat_id\"].unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      P_0000020\n",
       "1      P_0000150\n",
       "2      P_0000235\n",
       "3      P_0000008\n",
       "4      P_0000057\n",
       "         ...    \n",
       "203            9\n",
       "204            8\n",
       "205            8\n",
       "206           16\n",
       "207           12\n",
       "Length: 208, dtype: object"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([t1,data1],ignore_index=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 糖化血红蛋白"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 第二组（简答）\n",
    "\n",
    "1. 仅从本案例提供的信息中来看，近期化验的糖化血红蛋白是否达标，可能与什么因素相关？请简述你所考虑的用户特征、所适用的分析方法，以及工作思路和步骤。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 答题要求\n",
    "\n",
    "1. 提交分析报告（.html或.pdf）和脚本（.py或.ipynb）；\n",
    "2. 计算结果准确；\n",
    "3. 脚本可复现、可读性良好；\n",
    "4. 可视化效果简洁美观；\n",
    "5. 简答题思路清晰，具有可行性。\n",
    "\n",
    "## 附：数据字典\n",
    "\n",
    "**patient_list**\n",
    "\n",
    "收录患者名单。\n",
    "\n",
    "| 字段名 | 数据类型 | 注释 |\n",
    "| ------ | ------ | ------ |\n",
    "| pat_id | varchar(45) | 患者ID |\n",
    "| create_time | datetime | 收录时间 |\n",
    "| age | int(11) | 患者年龄 |\n",
    "| doc_id | varchar(45) | 主管医生 |\n",
    "\n",
    "**glucose**\n",
    "\n",
    "最近一个月患者的血糖数据\n",
    "\n",
    "| 字段名 | 数据类型 | 注释 |\n",
    "| ------ | ------ | ------ |\n",
    "| pat_id | varchar(45) | 患者ID |\n",
    "| create_time | datetime | 上传时间 |\n",
    "| glucose | decimal(3, 1) | 血糖值 |\n",
    "\n",
    "**lab**\n",
    "\n",
    "化验数据\n",
    "\n",
    "| 字段名 | 数据类型 | 注释 |\n",
    "| ------ | ------ | ------ |\n",
    "| pat_id | varchar(45) | 患者ID |\n",
    "| lab_date | datetime | 化验日期 |\n",
    "| labreport_name | varchar(200) | 化验报告标题 |\n",
    "| labitems_code | varchar(20) | 化验项目编号 |\n",
    "| labitems_name | varchar(200) | 化验项目名称 |\n",
    "| lab_value | varchar(45) | 化验结果 |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
